package day02;

public class DataTypeDemo {
    public static void main(String[] args) {
        //类型间的转换
        byte b1=5;
        byte b2=6;
        byte b3=(byte)(b1+b2);
        byte b4=(byte)(b2+b3);
        System.out.println(b3);//11
        System.out.println(b4);//17

        System.out.println(2+2);//4
        System.out.println(2+'2');//52,2+50
        System.out.println('2'+'2');//100,'2'=50
        System.out.println('4');//2

        int a = '我';//看字符对应的码
        System.out.println(a);//’我‘的码
        char b = 97;//看码对应的字符
        System.out.println(b);//A
        char f = 52;
        System.out.println(f);//4


        /*
        //类型转换
        int a = 5;//
        long b = a ;//
        int c = (int)b;//强制性类型转换

        long d = 5;//自动类型转换
        double e = 5;//自动类型转换
        System.out.println(e);//5.0
        long f = 10000000000L;
        int g = (int)f;
        System.out.println(g);//1410065408，强转有可能发现溢出

        double h=25.987;
        int i = (int)h;
        System.out.println(i);//强转有可能丢失精度
         */

        /*
        //char，字符型，2个字节
        char c1 = '女';//女
        char c2 = 'f';//f
        char c3 = '6';//6
        char c4 = ' ';//空格
        // char c5 = 女;//编译错误，字符直接量必须放在单引号中
        // char c6 = '';编译错误，必须有字符
        // char c7 ='10';编译错误，只能装一个字符
        char c8 = 65;//0到65535之间
        System.out.println(c8);//’A‘，println()时会依据c8的类型来做输出
                               //若c8为char类型，则以字符形式展示
                               //若c8为int类型，则以数字型形式展示
        char c9 = '\\';//\
         */

        /*
        //boolean:布尔型,1字节
        boolean a=true;//true为布尔直接型
        boolean b=false;//false为布尔型直接量
        //boolean c=25;//编译错误，布尔型只能存储true或false
         */

        /*
        double，8字节，很大很大
        double a=25.678;//25.678为小数直接量，默认为double类型
        float b = 25.678F;//25.678为float型直接量，后面要加f或F

        double c=3.0,d=2.9;//0.10000000000000009,正常情况为0.1，出现误差
        c=6;d=4.9;//1.0999999999999996,正常情况为1.1
        c=6;d=1.9;//4.1,没误差
        System.out.println(c-d);
        float y=3.0F,o=2.9F;//0.099999905
        System.out.println(y-o);

         */

        /*
        long,长整型，8字节，-900万万亿到900万万亿多
        long a = 25L;//25L直接量
        long c = 10000000000L;//100亿默认为为int类型，所以编译错误，超出int值则会溢出，需要在后面加L或l
        long d = 360L*24*60*60*1000;//一年毫秒数//不加L则溢出
        System.out.println(d);//31536000000
        long e = 1000000000*2*10L;//200亿
        long f = 1000000000*3*10L;//不是300亿
        long g = 1000000000L*3*10;//300亿
        System.out.println(e);200亿
        System.out.println(f);-12949672960
        System.out.println(g);300亿
         */

        /*
        int,整数，4字节，-21亿到21个亿
        int a = 250;//250为整数直接量
        //超出范围值则会溢出
        //只能装整数，有小数则会报错
        //不会四舍五入
        System.out.println(5/2);//2
        System.out.println(2/5);//0
        System.out.println(5.0/2);//2.5
        int d = 2147483647;//int最大值
        d = d + 1;
        System.out.println(d);//则溢出，-2147483648
        */
    }
}
